#ifndef _TEST_EXCEPTION_H_
#define _TEST_EXCEPTION_H_

#include "TestHeader.h"

class TestException
{
    public:
        TestException() {}
        virtual ~TestException() {} 
};



class ErrorException : public TestException
{
    public:
        ErrorException() {}
        ErrorException(const char* errorFunName): _errorFunName(errorFunName) {}
        virtual ~ErrorException() {} 
        void setErrorFunName(const char* errorFunName) { _errorFunName = errorFunName; }
        const char* getErrorFunName() const { return _errorFunName.c_str(); }
    
    private:
        std::string _errorFunName;
};



class FailureException : public TestException
{
    public:
        FailureException() {}
   
        FailureException(const char* assertName):_assertName(assertName) {}
        virtual ~FailureException() {}
        
        void setAssertName(const char* assertName) { _assertName = assertName; }
        const char* getAssertName() const { return _assertName.c_str(); }

        void setFunName(const char* funName) { _funName = funName; }
        const char* getFunName() const { return _funName.c_str(); }

        void setClassName(const char* className) { _className = className; }
        const char* getClassName() const { return _className.c_str(); }

    private:
        std::string _assertName;
        std::string _funName;
        std::string _className;
};

#endif

